import unittest

from login_function import login, login_func


class Testwork1(unittest.TestCase):

    @classmethod
    def setUpClass(cls) -> None:
        print('类初始化方法，只运行一次，而且最先执行')

    @classmethod
    def tearDownClass(cls) -> None:
        print('类清除方法，只运行一次，而且最后执行')

    def setUp(self) -> None:
        print('运行初始化方法')

    def tearDown(self) -> None:
        print('运行清除方法')

    def test_method1(self):
        login('admin', '123456')

    def test_method2(self):
        login('root', '123456')

    def test_method3(self):
        login('admin', '123123')

    def test_method4(self):
        login('aaa', '123123')

    def test_method5(self):
        expect_result = 0
        actual_result = login_func('admin', '123456').get('code')
        self.assertEqual(expect_result, actual_result)

    def test_method6(self):
        expect_result = 3
        actual_result = login_func('admin', '123123').get('code')
        self.assertEqual(expect_result, actual_result)

    def test_method7(self):
        expect_result = 2
        actual_result = login_func('admin', '').get('code')
        self.assertEqual(expect_result, actual_result)


if __name__ == '__main__':
    suite_obj = unittest.TestSuite()  # 一般使用 unittest 里的 suite,loader,runner 都是单独文件运行的，因为它们的运行方式和 case
    # 的运行不太一样，case 一般运行的都带 Unittests for 前缀，而其它的运行一般是就是这个文件名的对象
    suite_obj.addTest(unittest.makeSuite(Testwork1))  # 注意这里不能像 loader 那儿那样合并这两步，推测是因为创建套件对象后使用了
    # addTest 方法之后不再是可被 runner 执行的套件对象了，很可能已经变质，因此这里合并步骤必然报错，因为 runner 只能执行套件对象或是用例对象
    # 而 loader 那里是因为先创建的正好是加载对象，使用 discover 方法后才变成的套件对象
    unittest.TextTestRunner().run(suite_obj)
